/*
 * 寻找水仙花数
 */

/**
 * 判断参数所传入的数字是否是水仙花数
 * @param natural 被判断的数字
 * @returns 仅当参数传入的数字是水仙花数时返回 true ，否则一律返回 false
 */
function isNarcissistic(natural){

    let sum = 0 ; // 用来保存每一位数字的3次幂之和

    let x = natural ;
    while( x > 0 ) {
        // 得到每一位数字: n
        let n = x % 10 ; // 从个位开始
        // 求每一位数字的3次幂: n**3 、 Math.pow( n , 3 )
        let p = n ** 3 ;
        // 累加每一位数字的3次幂
        sum += p ;
        // 让 x 除以 10 求商 取整
        x = ( x / 10 ) | 0 ;
        // console.log( n , p , sum );
    }

    // 判断累加后的和是否和原数字相等
    if( sum == natural ) {
        return true ; // 如果相等则返回 true
    } else {
        return false ; // 如果不相等则返回 false
    }
}


// 调用 isNarcissistic 函数
// let flag = isNarcissistic( 351 );
// console.log( flag );

function showNarcissistic(){
    for( let i = 100 ; i < 1000 ; i++ ){
        // 调用函数判断 i 是否是个水仙花数
        let flag = isNarcissistic( i );
        // 如果 flag 中的变量为 true
        if( flag == true ){ // 将来熟练后不要这样写
            // 则表示i是个水仙花数
            console.log( i );
        }
    }
}

// 调用函数
showNarcissistic();
